import axios from 'axios'
import router from '@/router'
import {vm} from '@/main'

const baseURL = process.env.NODE_ENV === 'production' ? '' :'/api';

const request = axios.create({
    baseURL,
    withCredentials: true
});

//添加请求拦截器

//ajax 实现页面局部刷新技术   

/**
 * 1.创建ajax对象  XMLHttprequest
 * 2.链接服务器  open(method,url,async)  同步，异步
 * 3.发送请求    send(data)
 * 4.接收响应    onload  onreadystatechange
 * 
 * readystate 请求状态值
 * 
 * 0 - 未初始化
 * 1 - 请求建立
 * 2 - 请求链接
 * 3 - 请求过半
 * 4 - 请求成功
 * 
 * status     响应状态码
 * 
 * 200 500 401 403 406 304
 * 
*/

request.interceptors.request.use(function(config){   //成功的回调
    // console.log("request===================",config);
    let writePath = ['/user/checkCode','/user/login','/user/registry'];

    if(!writePath.includes(config.url)){
        config.headers.authorization = localStorage.getItem('token');
    }
    return config
},function(error){ //失败的回调
    return Promise.reject(error)  //promise  1.进行中  2.已成功  3.已失败   
})


//添加响应拦截器

request.interceptors.response.use(function(res){  //成功的回调
    // console.log("response===================",res);
    return res.data
},function(error){  //失败的回调
    // console.dir(error);
    switch (error.response.status) {
        case 404:
            vm.$message('资源走丢了');   
            router.push('/404'); 
            break;
        case 401:
            vm.$message('您没有登录，或者登录过期');
            router.push('/login')
            break;
        case 403:
            vm.$message('您没有权限');
            break;
        case 500:
            vm.$message('服务器有误');
            break;
        default:
            break;
    }
})

export default {
    get(url,params={}){
        return request.get(url,{params})
    },
    post(url,params={}){
        return request.post(url,params)
    },
    put(url,params={}){
        return request.put(url,params)
    },  
    delete(url,params={}){
        return request.delete(url,{params})
    }
}